package toOffer;

import java.util.*;

/**
 * <h3>leetcode</h3>
 *
 * @author BigFaceCat
 * @date 2024/3/25 16:31
 * @description <p>字母异位词分组</p>
 */
public class No49 {
    public static void main(String[] args) {
        String[] strs = {""};
        for (List<String> list : groupAnagrams(strs)) {
            for (String s : list) {
                System.out.print(s + " ");
            }
            System.out.println();
        }
    }

    /**
     * 思想：
     * 挺low的这个题，主要就是把所有字符串都sort一下，然后把一样的聚在一起就行了
     * 有个关键操作是：把sort完的字符串作为key、list作为value
     *
     * @param strs
     * @return
     */
    public static List<List<String>> groupAnagrams(String[] strs) {
        Map<String, ArrayList<String>> map = new HashMap<>();

        for (String str : strs) {
            char[] chars = str.toCharArray();
            Arrays.sort(chars);
            String newStr = Arrays.toString(chars);
            ArrayList<String> list = map.getOrDefault(newStr, new ArrayList<>());
            list.add(str);
            map.put(newStr, list);
        }

        return new ArrayList<List<String>>(map.values());
    }
}
